package model.bo;

import java.util.HashMap;
import java.util.List;

import model.bean.Matricula;
import model.persistencia.dao.MatriculaDAO;

public class MatriculaBO {

	private MatriculaDAO matriculaDAO = new MatriculaDAO(Matricula.class);

	public List<Matricula> listarMatriculasIndicados(Matricula matricula) {

		List<Matricula> matriculas = null;

		HashMap<String, Object> parametros = new HashMap<String, Object>();
		StringBuilder hqlCondicao = new StringBuilder();

		if (matricula.getIndicacao().getConhecimentoTecnico() != null
				&& matricula.getIndicacao().getConhecimentoTecnico() != 0) {
             hqlCondicao.append(" and matricula.indicacao.conhecimentoTecnico >:conhecimentoTecnicoParam");
             parametros.put("conhecimentoTecnicoParam", matricula.getIndicacao().getConhecimentoTecnico());
		}
		
		if (matricula.getIndicacao().getComprometimento() != null
				&& matricula.getIndicacao().getComprometimento() != 0) {
             hqlCondicao.append(" and matricula.indicacao.comprometimento >:comprometimentoParam");
             parametros.put("comprometimentoParam", matricula.getIndicacao().getComprometimento());
		}
		
		if (matricula.getIndicacao().getMarketingPessoal() != null
				&& matricula.getIndicacao().getMarketingPessoal() != 0) {
             hqlCondicao.append(" and matricula.indicacao.marketingPessoal >:marketingPessoalParam");
             parametros.put("marketingPessoalParam", matricula.getIndicacao().getMarketingPessoal());
		}
		
		if (matricula.getIndicacao().getProatividade() != null
				&& matricula.getIndicacao().getProatividade() != 0) {
             hqlCondicao.append(" and matricula.indicacao.proatividade >:proatividadeParam");
             parametros.put("proatividadeParam", matricula.getIndicacao().getProatividade());
		}
		
		if (matricula.getIndicacao().getRelacionamentoInterpessoal() != null
				&& matricula.getIndicacao().getRelacionamentoInterpessoal() != 0) {
             hqlCondicao.append(" and matricula.indicacao.relacionamentoInterpessoal >:relacionamentoInterpessoalParam");
             parametros.put("relacionamentoInterpessoalParam", matricula.getIndicacao().getRelacionamentoInterpessoal());
		}
		
//		if (matricula.getAluno().getNumeroIndicacoes() != null
//				&& matricula.getAluno().getNumeroIndicacoes() != 0) {
//             hqlCondicao.append(" and (select count(matricula.indicacao.id) >:numeroIndicacoesParam)");
//             parametros.put("numeroIndicacoesParam", matricula.getAluno().getNumeroIndicacoes());
//		}

		try {
			matriculas = matriculaDAO.listarAlunosIndicados(hqlCondicao, parametros);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return matriculas;
	}

}
